#include "serverSocket.h"

ServerSocket::ServerSocket(unsigned int puerto) {
	this->socketFd = socket(AF_INET, SOCK_STREAM, 0);
	this->puerto = puerto;
}

int ServerSocket::enlazar() {
	struct sockaddr_in address;
	int resultado;

	address.sin_family = AF_INET;
	address.sin_port = htons(this->puerto);
	address.sin_addr.s_addr = INADDR_ANY;

	resultado = bind(socketFd,
		(struct sockaddr *)&address,
		(socklen_t)sizeof(struct sockaddr));

	return resultado;
}

int ServerSocket::escuchar() {
	int resultado;
	resultado = listen(socketFd,
						MAX_CANTIDAD_CONEXIONES_EN_ESPERA);
	return resultado;
}

int ServerSocket::aceptar() {
	int nuevoSocketFd;
	struct sockaddr cliente;
	socklen_t tamanioCliente = sizeof(cliente);
	nuevoSocketFd = accept(socketFd,
							&cliente,
							&tamanioCliente);
	return nuevoSocketFd;
}

void ServerSocket::cerrar() {
	shutdown(socketFd, SHUT_RDWR);
	close(socketFd);
}
